package br.org.espmessenger.servidor.jpa;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.org.espmessenger.modelo.Usuario;
import br.org.espmessenger.modelo.excecoes.LogonInvalidoException;
import br.org.espmessenger.servidor.UsuariosDAO;

public class UsuariosDAOJPA implements UsuariosDAO {

	public boolean usuarioExiste(Usuario usuario) {
		EntityManager em = GestorJPA.getEntityManager();
		Query consulta = em.createQuery("Select id from Usuario where email = ?");
		consulta.setParameter(1, usuario.getEmail());
		
		return consulta.getResultList().size() > 0;
	}

	public void registrarNovaConta(Usuario usuario) {
		EntityManager em = GestorJPA.getEntityManager();
		em.getTransaction().begin();
		em.persist(usuario);
		em.getTransaction().commit();
	}

	public Usuario obterUsuarioPorLogon(Usuario usuario)
			throws LogonInvalidoException {
		EntityManager em = GestorJPA.getEntityManager();
		Query consulta = em.createQuery("from Usuario where email = ? and senha = ?");
		consulta.setParameter(1, usuario.getEmail());
		consulta.setParameter(2, usuario.getSenha());
		
		try {
			return (Usuario) consulta.getSingleResult();
		} catch (Exception e) {
			throw new LogonInvalidoException();
		}
	}

}
